VPATH = src:ppd:bin

ppds = sp712.ppd.gz sp742.ppd.gz sp717.ppd.gz sp747.ppd.gz tsp113.ppd.gz tsp143.ppd.gz bsc10ii.ppd.gz tsp143gt.ppd.gz tsp654.ppd.gz tsp700II.ppd.gz tsp800II.ppd.gz pop10.ppd.gz mcp30.ppd.gz mcp31.ppd.gz mcp20.ppd.gz mcp21.ppd.gz mcl32.ppd.gz mcl21.ppd.gz sk1-211_221.ppd.gz sk1-211_221_presenter.ppd.gz sk1-311_321.ppd.gz sk1-311_presenter.ppd.gz sk1-41.ppd.gz sk1-41_presenter.ppd.gz sk5-31_presenter.ppd.gz

DEFS=
LIBS=-lcupsimage -lcups

ifdef RPMBUILD
DEFS=-DRPMBUILD
LIBS=-ldl
endif

define dependencies
@if ! echo '#include <cups/cups.h>' | $(CC) $(CPPFLAGS) -E ->/dev/null 2>&1; then echo "CUPS headers not available - exiting"; exit 1; fi
endef

define init
@if [ ! -e bin ]; then echo "mkdir bin"; mkdir -p bin; fi
endef

define sweep
@if [ -e bin ]; then echo "rm -f bin/*"; rm -f bin/*; rmdir bin; fi
@if [ -e install ]; then echo "rm -f install/*"; rm -f install/*; rmdir install; fi
endef

install/setup: rastertostar rastertostarlm  rastertostarm $(ppds) setup
	# packaging
	@if [ -e install ]; then rm -f install/*; rmdir install; fi
	mkdir install
	cp bin/rastertostar install
	cp bin/rastertostarlm install
	cp bin/rastertostarm install
	gzip -df bin/*.ppd.gz
	cp bin/*.ppd install
	cp bin/setup install
.PHONY: install
install:
	@if [ ! -e install ]; then echo "Please run make package first."; exit 1; fi
	# installing
	cd install; exec ./setup

.PHONY: remove
remove:
	#removing from default location (other locations require manual removal)
	@if [ -e /usr/lib/cups/filter/rastertostar ]; then echo "Removing rastertostar"; rm -f /usr/lib/cups/filter/rastertostar; fi
	@if [ -e /usr/lib/cups/filter/rastertostarlm ]; then echo "Removing rastertostarlm"; rm -f /usr/lib/cups/filter/rastertostarlm; fi
	@if [ -e /usr/lib/cups/filter/rastertostarm ]; then echo "Removing rastertostarm"; rm -f /usr/lib/cups/filter/rastertostarm; fi
	@if [ -d /usr/share/cups/model/star ]; then echo "Removing dir .../cups/model/star"; rm -rf /usr/share/cups/model/star; fi

.PHONY: rpmbuild
rpmbuild:
	@if [ ! -e install ]; then echo "Please run make package first."; exit 1; fi
	# installing
	RPMBUILD="true"; export RPMBUILD; cd install; exec ./setup

.PHONY: help
help:
	# Help for starcupsdrv make file usage
	#
	# command          purpose
	# ------------------------------------
	# make              compile all sources and create the install directory
	# make install      execute the setup shell script from the install directory [require root user permissions]
	# make remove       removes installed files from your system (assumes default install lication) [requires root user permissions]
	# make clean        deletes all compiles files and their folders

rastertostar: rastertostar.c
	$(dependencies)
	$(init)
	# compiling rastertostar filter
	$(CC) -Wall $(DEFS) $(CPPFLAGS) $(CFLAGS) -fPIC $(LDFLAGS) -o bin/rastertostar src/rastertostar.c $(LIBS)

rastertostarlm: rastertostarlm.c
	$(dependencies)
	$(init)
	# compiling rastertostarlm filter
	$(CC) -Wall $(DEFS) $(CPPFLAGS) $(CFLAGS) -fPIC $(LDFLAGS) -o bin/rastertostarlm src/rastertostarlm.c $(LIBS)

rastertostarm: rastertostarm.c
	$(dependencies)
	$(init)
	# compiling rastertostarm filter
	$(CC) -Wall $(DEFS) $(CPPFLAGS) $(CFLAGS) -fPIC $(LDFLAGS) -o bin/rastertostarm src/rastertostarm.c $(LIBS)

$(ppds): %.ppd.gz: %.ppd
	$(init)
	# gzip ppd file
	gzip -c $< >> bin/$@

setup: setup.sh
	$(dependencies)
	$(init)
	# create setup shell script
	cp src/setup.sh bin/setup
	chmod +x bin/setup

.PHONY: clean
clean:
	# cleaning
	$(sweep)

